package com.htl.exampro.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.htl.exampro.base.model.PageResult;
import com.htl.exampro.user.pojo.domain.UserDO;
import com.htl.exampro.user.pojo.query.UserPageParam;
import com.htl.exampro.user.pojo.vo.UserVO;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService extends IService<UserDO> {
    /**
     * 分页查询用户列表
     */
    PageResult<UserVO> getUserList(UserPageParam pageParam);

    /**
     * 创建用户
     */
    void createUser(UserVO user);

    /**
     * 获取用户详情
     */
    UserVO getUserDetail(Long id);

    /**
     * 更新用户
     */
    void updateUser(UserVO user);

    /**
     * 更新用户状态信息
     */
    void updateUserStatus(UserVO user);

    /**
     * 删除用户
     */
    void deleteUser(Long id);

    /**
     * 用户登录
     */
    UserVO login(String username, String password, String remoteAddr);

    /**
     * 用户登出
     */
    void logout();

    /**
     * 修改密码
     */
    void changePassword(String oldPassword, String newPassword);

    /**
     * 重置密码
     */
    void resetPassword(String id, String password);

    /**
     * 通过userIdList批量查询用户名
     */
    List<UserVO> getUsernameList(List<String> ids);

    /**
     * 发送验证码
     */
    void sendCode(UserVO userVO);

    /**
     * 添加用户
     */
    void addUser(UserVO user);

    /**
     * 获取当前登录用户信息
     */
    UserVO getCurrentUser();

    /**
     * 更新当前用户信息
     */
    void updateCurrentUser(UserVO user);
}